package view.cursada;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import model.Cursada;
import model.Curso;
import model.comunication.ICursada;
import model.comunication.ICurso;

import com.toedter.calendar.JDateChooser;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class CrearCursada extends JDialog {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private final JPanel contentPanel = new JPanel();
	private JTextField textHorasSemanales;
	private JTextField textCantidadClases;
	private JTextField txtNombreCurso;
	private JDateChooser dateInicioCursada;
	private JDateChooser dateInicioInscripcion;
	private ICursada comunicationCursada;
	private ICurso comunicationCurso;
	private List<Cursada> cursadas;
	private List<Curso> cursos;
	private Curso cursoSelected;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		try {
			CrearCursada dialog = new CrearCursada(null);
			dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
			dialog.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Create the dialog.
	 */
	public CrearCursada(Curso curso) {
		this.cursoSelected = curso;
		this.comunicationCurso = ICurso.getInstance();
		this.comunicationCursada = ICursada.getInstance();
		initialice();
		loadData();
	}

	private void initialice() {

		setBounds(100, 100, 504, 376);
		getContentPane().setLayout(new BorderLayout());

		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		contentPanel.setLayout(null);

		JLabel label = new JLabel("Fecha inicio cursada: ");
		label.setBounds(21, 14, 139, 14);
		contentPanel.add(label);

		JLabel label_1 = new JLabel("Fecha inicio inscripcion: ");
		label_1.setBounds(21, 42, 139, 14);
		contentPanel.add(label_1);

		dateInicioInscripcion = new JDateChooser();
		dateInicioInscripcion.setBounds(181, 36, 132, 20);
		contentPanel.add(dateInicioInscripcion);

		dateInicioCursada = new JDateChooser();
		dateInicioCursada.setBounds(181, 14, 132, 20);
		contentPanel.add(dateInicioCursada);

		JLabel label_2 = new JLabel("Horas semanales: ");
		label_2.setBounds(20, 65, 140, 14);
		contentPanel.add(label_2);

		textHorasSemanales = new JTextField();
		textHorasSemanales.setColumns(10);
		textHorasSemanales.setBounds(181, 62, 132, 20);
		contentPanel.add(textHorasSemanales);

		textCantidadClases = new JTextField();
		textCantidadClases.setColumns(10);
		textCantidadClases.setBounds(181, 85, 132, 20);
		contentPanel.add(textCantidadClases);

		JLabel label_3 = new JLabel("Cantidad de clases: ");
		label_3.setBounds(21, 88, 132, 14);
		contentPanel.add(label_3);

		txtNombreCurso = new JTextField();
		txtNombreCurso.setBounds(181, 113, 132, 20);
		contentPanel.add(txtNombreCurso);
		txtNombreCurso.setColumns(10);

		JLabel lblNombreDeCurso = new JLabel("Nombre de Curso: ");
		lblNombreDeCurso.setBounds(21, 116, 132, 14);
		contentPanel.add(lblNombreDeCurso);

		JPanel buttonPane = new JPanel();
		buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
		getContentPane().add(buttonPane, BorderLayout.SOUTH);
		JButton okButton = new JButton("OK");
		okButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				comunicationCursada.add(comunicationCursada.getCursada(dateInicioCursada.getCalendar(), dateInicioInscripcion.getCalendar(), new Integer(textCantidadClases.getText()), new Integer(textHorasSemanales.getText()), cursoSelected));
				dispose();
			}
		});
		okButton.setActionCommand("OK");
		buttonPane.add(okButton);
		getRootPane().setDefaultButton(okButton);
		JButton cancelButton = new JButton("Cancel");
		cancelButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
			}
		});
		cancelButton.setActionCommand("Cancel");
		buttonPane.add(cancelButton);

		this.cursos = this.comunicationCurso.getAllCursos();
	}

	private void loadData() {
		this.txtNombreCurso.setText(this.cursoSelected.getNombre());
	}
}
